Storage devices enable users to store and retrieve data. Examples of storage devices include volatile memory devices and non-volatile memory devices. A non-volatile memory may retain data after a power-down event, and a volatile memory may lose data after a power-down event.
Data written to and read from a storage device may be subject to one or more errors. For example, electronic noise may affect a storage element of a storage device and may cause the storage element to indicate an “incorrect” state.
Storage devices may use error correction coding (ECC) techniques to increase reliability of stored data. For example, an ECC technique may specify that redundancy information is to be added to data to generate a codeword prior to storing the data at a memory. During a read process to read the data, the redundancy information may be used to correct one or more errors of the codeword (up to an error correction capability associated with the ECC technique).
Certain ECC techniques provide a relatively high level of error correction capability. For example, by using a relatively large amount of redundancy information, error correction capability may be increased. Increasing an amount of redundancy information may affect data decoding throughput and data storage density. For example, in some cases, increasing the amount of redundancy may increase throughput due to increased speed of decoding operations, and in other cases increasing the amount of redundancy may decrease throughput due to additional computations associated with the redundancy information. Further, increasing a number of linear equations associated with a codeword (in order to generate additional redundancy information) may complicate certain encoding and/or decoding operations (e.g., the ECC technique may not be relatively “encodeable”). Other ECC techniques may increase decoding throughput and data storage density by reducing an amount of redundancy information. In some circumstances, a number of errors may exceed an error correction capability associated with an ECC technique, which may result in an uncorrectable error correcting code (UECC) error and data loss.
Storage devices may operate in a sequential mode in which data is accessed via a sequence of consecutive logical addresses and may also operate in a random read mode in which data is accessed at non-sequential logical addresses. In addition, some storage devices may have a write unit size (e.g., 16 kilobytes (kB)) for writing data that is larger than a read unit size (e.g., 1 kB) for reading data. Encoding data using 16 kB codeword sizes based on a 16 kB write unit size may provide higher error correction capability as compared to encoding data using a 1 kB codeword size based on a 1 kB read unit size. However, decoding the data involves reading the entire 16 kB codeword, which impairs random read performance when reading 1 kB data units.